package pl.uz.zgora.plan;

import java.util.ArrayList;

import org.ksoap2.serialization.SoapObject;

import android.content.Context;

public class Przedmiot {
	public Przedmiot(){}
	
	public Przedmiot(final String dzien, final String nazwa, final String podgrupa, final String rodzajZajec, final String godzinaRozpoczecia,
					 final String godzinaZakonczenia, final Integer fkSali, final Integer fkGrupy, final Integer fkNauczyciela, final String uwagi)
	{
		this.idPrzedmiotu = null;
		this.dzien = dzien;
		setNazwa(nazwa);
		this.podgrupa = podgrupa;
		this.rodzajZajec = rodzajZajec;
		this.godzinaRozpoczecia = godzinaRozpoczecia;
		this.godzinaZakonczenia = godzinaZakonczenia;
		this.fkSali = fkSali;
		this.fkGrupy = fkGrupy;
		this.fkNauczyciela = fkNauczyciela;
		this.uwagi = uwagi;
	}
	
	public Przedmiot(SoapObject przedmiotSoapObj) {		
		final String dzien = przedmiotSoapObj.getProperty("dzien").toString();
		setDzien(dzien);
		
		final String nazwa = przedmiotSoapObj.getProperty("nazwa").toString();
		setNazwa(nazwa);
		
		if(przedmiotSoapObj.getProperty("podgrupa") != null) {
			final String podgrupa = przedmiotSoapObj.getProperty("podgrupa").toString();
			setPodgrupa(podgrupa);
		} else {
			setPodgrupa("");
		}
		
		final String rodzajZajec = przedmiotSoapObj.getProperty("rodzajZajec").toString();
		setRodzajZajec(rodzajZajec);
		
		final String godzinaRozpoczecia = przedmiotSoapObj.getProperty("godzinaRozpoczecia").toString();
		setGodzinaRozpoczecia(godzinaRozpoczecia);
		
		final String godzinaZakonczenia = przedmiotSoapObj.getProperty("godzinaZakonczenia").toString();
		setGodzinaZakonczenia(godzinaZakonczenia);
		// Obsługa typu Sala
		{
			final SoapObject classSoapObj = (SoapObject) przedmiotSoapObj.getProperty("sala");
			final Integer idSali = Integer.parseInt(classSoapObj.getProperty("idSali").toString());
			setFkSali(idSali);
		}
		// Obsługa typu Grupa
		{
			final SoapObject groupSoapObj = (SoapObject) przedmiotSoapObj.getProperty("grupa");
			final Integer idGrupy = Integer.parseInt(groupSoapObj.getProperty("idGrupy").toString());
			setFkGrupy(idGrupy);
		}
		// Obsługa typu Nauczyciel
		{
			final SoapObject teacherSoapObj = (SoapObject) przedmiotSoapObj.getProperty("nauczyciel");
			final Integer idNauczyciel = Integer.parseInt(teacherSoapObj.getProperty("idNauczyciela").toString());
			setFkNauczyciela(idNauczyciel);
		}
		// Obsługa uwag do przedmiotu
		{
			final String uwagi = przedmiotSoapObj.getProperty("uwagi").toString();
			setUwagi(uwagi);
		}
	}

	public Integer getIdPrzedmiotu() {
		return idPrzedmiotu;
	}

	public void setIdPrzedmiotu(Integer idPrzedmiotu) {
		this.idPrzedmiotu = idPrzedmiotu;
	}

	public String getDzien() {
		return dzien;
	}

	public void setDzien(String dzien) {
		this.dzien = dzien;
	}
	
	public String getPodgrupa() {
		if(podgrupa.equals("&nbsp")) {
			return "";
		}
		return podgrupa;
	}

	public void setPodgrupa(String podgrupa) {
		if(podgrupa == null || podgrupa.equals("")) {
			this.podgrupa = "";
		} else {
			this.podgrupa = podgrupa;
		}
	}

	public String getNazwa() {
		return nazwa;
	}

	public void setNazwa(String nazwa) {
		if(nazwa == null || nazwa.equals("")) { throw new IllegalArgumentException(); }
		this.nazwa = nazwa;
	}

	public String getRodzajZajec() {
		if(rodzajZajec.equals("W")) { return "Wykład"; }
		if(rodzajZajec.equals("Ć")) { return "Ćwiczenia"; }
		if(rodzajZajec.equals("L")) { return "Laboratorium"; }
		if(rodzajZajec.equals("S")) { return "Seminarium"; }
		if(rodzajZajec.equals("P")) { return "Projekt"; }
		return rodzajZajec;
	}

	public void setRodzajZajec(String rodzajZajec) {
		this.rodzajZajec = rodzajZajec;
	}

	public String getGodzinaRozpoczecia() {
		return godzinaRozpoczecia;
	}

	public void setGodzinaRozpoczecia(String godzinaRozpoczecia) {
		this.godzinaRozpoczecia = godzinaRozpoczecia;
	}

	public String getGodzinaZakonczenia() {
		return godzinaZakonczenia;
	}

	public void setGodzinaZakonczenia(String godzinaZakonczenia) {
		this.godzinaZakonczenia = godzinaZakonczenia;
	}

	public Integer getFkSali() {
		return fkSali;
	}
	
	public Sala getSala(Context context) {
		PlanUzDataSource planDataSource = new PlanUzDataSource(context);
		final ArrayList<Sala> sala = planDataSource.readSale(getFkSali());
		return sala.get(0);
	}
	
	public Nauczyciel getNauczyciel(Context context) {
		PlanUzDataSource planDataSource = new PlanUzDataSource(context);
		final ArrayList<Nauczyciel> nauczyciel = planDataSource.readNauczyciel(getFkNauczyciela());
		return nauczyciel.get(0);
	}

	public void setFkSali(Integer fkSali) {
		this.fkSali = fkSali;
	}

	public Integer getFkGrupy() {
		return fkGrupy;
	}

	public void setFkGrupy(Integer fkGrupy) {
		this.fkGrupy = fkGrupy;
	}

	public Integer getFkNauczyciela() {
		return fkNauczyciela;
	}

	public void setFkNauczyciela(Integer fkNauczyciela) {
		this.fkNauczyciela = fkNauczyciela;
	}

	public String getUwagi() {
		return uwagi;
	}

	public void setUwagi(String uwagi) {
		this.uwagi = uwagi;
	}

	private Integer idPrzedmiotu;
	private String podgrupa;

	private String dzien;
	private String nazwa;
	private String rodzajZajec;
	private String godzinaRozpoczecia;
	private String godzinaZakonczenia;
	private Integer fkSali;
	private Integer fkGrupy;
	private Integer fkNauczyciela;
	private String uwagi;
	private String data;
	public String getData() {
		return data;
	}

	public void setData(String data) {
		this.data = data;
	}
}
